package com.school.campus.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.school.common.annotation.Excel;
import com.school.common.core.domain.BaseEntity;
import org.apache.ibatis.annotations.Mapper;

/**
 * 校内活动对象 activity
 *
 * @author wwj
 * @date 2025-11-06
 */


public class Activity extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键自增ID
     */
    private String id;

    /**
     * 活动标题
     */
    @Excel(name = "活动标题")
    private String activityTitle;

    /**
     * 活动内容（支持长文本）
     */
    private String activityContent;

    /**
     * 活动类型（如：讲座、比赛、志愿活动等）
     */
    private String activityType;

    /**
     * 关联社团表的主键ID（与社团表id类型一致）
     */
    private Long clubId;

    /**
     * 活动地点
     */
    private String activityLocation;

    /**
     * 活动开始时间
     */

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "活动结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 报名开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date signUpStartTime;

    /**
     * 报名结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报名结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date signUpEndTime;

    /**
     * 活动状态：0=草稿,1=已发布,2=进行中,3=已结束,4=已取消
     */
    @Excel(name = "活动状态：0=草稿,1=已发布,2=进行中,3=已结束,4=已取消")
    private Long activityStatus;

    /**
     * 报名人数上限（0表示无上限）
     */
    @Excel(name = "报名人数上限", readConverterExp = "0=表示无上限")
    private int signUpLimit;

    /**
     * 当前报名人数
     */
    @Excel(name = "当前报名人数")
    private int currentSignUpNum;

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setActivityTitle(String activityTitle) {
        this.activityTitle = activityTitle;
    }

    public String getActivityTitle() {
        return activityTitle;
    }

    public void setActivityContent(String activityContent) {
        this.activityContent = activityContent;
    }

    public String getActivityContent() {
        return activityContent;
    }

    public void setActivityType(String activityType) {
        this.activityType = activityType;
    }

    public String getActivityType() {
        return activityType;
    }

    public void setClubId(Long clubId) {
        this.clubId = clubId;
    }

    public Long getClubId() {
        return clubId;
    }

    public void setActivityLocation(String activityLocation) {
        this.activityLocation = activityLocation;
    }

    public String getActivityLocation() {
        return activityLocation;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setSignUpStartTime(Date signUpStartTime) {
        this.signUpStartTime = signUpStartTime;
    }

    public Date getSignUpStartTime() {
        return signUpStartTime;
    }

    public void setSignUpEndTime(Date signUpEndTime) {
        this.signUpEndTime = signUpEndTime;
    }

    public Date getSignUpEndTime() {
        return signUpEndTime;
    }

    public void setActivityStatus(Long activityStatus) {
        this.activityStatus = activityStatus;
    }

    public Long getActivityStatus() {
        return activityStatus;
    }

    public void setSignUpLimit(int signUpLimit) {
        this.signUpLimit = signUpLimit;
    }

    public int getSignUpLimit() {
        return signUpLimit;
    }

    public void setCurrentSignUpNum(int currentSignUpNum) {
        this.currentSignUpNum = currentSignUpNum;
    }

    public int getCurrentSignUpNum() {
        return currentSignUpNum;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("activityTitle", getActivityTitle())
                .append("activityContent", getActivityContent())
                .append("activityType", getActivityType())
                .append("clubId", getClubId())
                .append("activityLocation", getActivityLocation())
                .append("startTime", getStartTime())
                .append("endTime", getEndTime())
                .append("signUpStartTime", getSignUpStartTime())
                .append("signUpEndTime", getSignUpEndTime())
                .append("activityStatus", getActivityStatus())
                .append("signUpLimit", getSignUpLimit())
                .append("currentSignUpNum", getCurrentSignUpNum())
                .toString();
    }
}
